// express的基本结构
import express from 'express'
import axios from 'axios'
import knex from './utils/myKenx.js'
import getHeroList from './utils/getHeroList.js'
const service = axios.create()
const app = express()

/* 每隔一段时间调用获取最新英雄方法 */
// getHeroList()
// 整合 multer 中间件
import multer from 'multer'
// 设置图片存储路径
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, `./uploads`) // ../uploads是将存放图片文件夹创建在node项目平级，./uploads会存放在node项目根目录下，需要提前建好文件夹，否则会报错
  },
  // filename: function (req, file, cb) {
  //   cb(null, `${Date.now()}-${file.originalname}`) // 文件名
  //   // cb(null, `${file.originalname}`) // 文件名
  // },
  filename: function (req, file, cb) {
    // fieldname是表单的name值，也就是我们设定的“logo”，
    // originalname是文件上传时的名字，可以根据它获取后缀，
    // encoding，mimetype 我就不详细介绍了，可以自行输出查看。
    const { fieldname, originalname, encoding, mimetype } = file
    const after = originalname.split('.')[1]
      ? '.' + originalname.split('.')[1]
      : '.jpg'
    cb(null, fieldname + after)
  }
})
// 设置文件的上传路径 问 uploads目录
// const imgBaseUrl = 'http://127.0.0.1:7749/uploads/'
const upload = multer({ storage: storage })
app.post('/uploads', upload.single('file'), (req, res) => {
  console.log(req.body)
  res.send(req.file)
})
// 整合 body parser
import bodyParser from 'body-parser'
// 创建服务器对象
// 增加 解析 x-www-form-urlencoded 数据的能力
// bodyParser.urlencoded({ extended: false }) 返回的是
// 使用bodyParser全局统一接受post请求
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
// 让外部可以访问 uploads 文件夹
app.use(express.static('uploads'))
// 定义端口
const httpPort = 7749
// 设置静态资源访问
// app.use(express.static('../uploads'))
// 导入 用户路由
import userRouter from './router/userRouter.js'
// 导入 英雄路由
import heroRouter from './router/heroRouter.js'
import component from './router/component.js'

// 测试 第三方中间件 设置跨域
import cors from 'cors'
// 和上面自己写的 功能类似
app.use(cors())

// hero接口
app.use('/uniapp', heroRouter)
// banner接口

// user接口
app.use('/uniapp', userRouter)
// 组件接口
app.use('/uniapp', component)

// 开启服务器
app.listen(httpPort, () => console.log(`http后端服务已在端口${httpPort}开启!`))
